Common Job spec reporting schema - #432
Merged
Merged
Conversation
|
Contributor
|
The latest Buf updates on your PR. Results from workflow Regenerate Protobuf Files / buf (pull_request).
|
gheorghestrimtu
added a commit
to smartcontractkit/chainlink
that referenced
this pull request
Sep 4, 2026
… reporter Fold core/services/cljobinfo into the existing nodestatusreporter/jobspec service instead of adding a parallel reporter. CLJobInfo is now emitted for every job regardless of type, alongside the unchanged OCR2-only JobSpecEvent track. application.go and the [JobSpecReporter] config are unchanged. Requires: smartcontractkit/chainlink-protos#432 RANE-4655
Add optional Job Distributor provenance to common.v1.CLJobInfo: feeds_manager_id (50), remote_uuid (51), spec_version (52), proposed_at (53) and approved_at (54). They are unset for jobs that did not arrive as an approved job proposal, which is how a consumer distinguishes a JD-managed job from one created directly via CLI, UI or TOML on disk. remote_uuid is the join key back to api.job.v1.Job.uuid. Document why no JD message is reused for the spec itself: neither cfm.ProposeJobRequest nor api.job.v1.Proposal models a job's contents, both carry the TOML document as an opaque string alongside identity metadata, so spec_toml follows JD's own representation rather than inventing a new one. Also add the changeset this PR was missing, covering the CLJobInfo addition as a whole. RANE-4655 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gheorghestrimtu
marked this pull request as ready for review
September 8, 2026 06:30
product-security-plaid-production
Bot
requested review from
Bwest981,
HashWrangler,
JooKop,
aleksandarknezevic,
dangitsdavid,
gheorghestrimtu,
gustavogama-cll,
nahuelbatista,
njegosrailic,
rodgerjohnson,
thomjg and
tonynguyen-ccl
September 8, 2026 06:30
gheorghestrimtu
previously approved these changes
Sep 8, 2026
aleksandarknezevic
previously approved these changes
Sep 8, 2026
gheorghestrimtu
dismissed stale reviews from aleksandarknezevic and themself
via
September 8, 2026 08:30
8bc931b
aleksandarknezevic
approved these changes
Sep 8, 2026
pull Bot
pushed a commit
to mikeyhodl/chainlink
that referenced
this pull request
Sep 8, 2026
* wip * refactor(nodestatusreporter): report every job type from the existing reporter Fold core/services/cljobinfo into the existing nodestatusreporter/jobspec service instead of adding a parallel reporter. CLJobInfo is now emitted for every job regardless of type, alongside the unchanged OCR2-only JobSpecEvent track. application.go and the [JobSpecReporter] config are unchanged. Requires: smartcontractkit/chainlink-protos#432 RANE-4655 * refactor(nodestatusreporter): emit CLJobInfo times as protobuf Timestamps * import in-development chainlink-protos commit * new chainlink-protos version * update chainlink-protos * lint --------- Co-authored-by: gheorghestrimtu <studentcuza@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
RANE-4655
Adds
common.v1.CLJobInfo— a job-type-agnostic snapshot of a single Chainlink job, so SOTcan answer "what is this node actually configured to run?" for any job type, not just OCR2.
Consumed by smartcontractkit/chainlink#23227.
Node identity + the job's common fields + optional JD provenance + the full job definition
as a TOML string.
spec_tomlmeans no per-type proto and no per-type extractor, includingfor job types that don't exist yet. It also matches how JD already moves specs around —
both
cfm.ProposeJobRequestandapi.job.v1.Proposalcarry the TOML as an opaque string.remote_uuidis the join key back toapi.job.v1.Job.uuid.Timestamps are
int64epoch millis, notgoogle.protobuf.Timestamp. The WKT versionregistered fine against staging but never got a Glue table, while
NodeBuildInfofrom thesame node and emitter kept landing. Nothing registered with chip-ingress from any domain
imports a WKT. Enums and
optionalare fine (data-feeds/job_spec/v1/job_spec_event.protouses both and has a table), so the WKT was the only outlier — swapping it for
int64wasthe sole change and the table appeared. Also avoids RFC3339 strings, which Go emits at
variable width so they don't sort chronologically.
Verified on stage (
cl-df-eth-sepolia-preprod): 974 rows, 5 nodes, 7 jobs over ~13h, all20 fields mapped,
spec_tomlpopulated on every row.bootstrapjobs are included, whichthe OCR2-only telemetry never covered.
Note: fields 18/41/53/54 changed type on the same field numbers. The registry accepted it,
but during rollout the old pods briefly emitted wire type 2 where the registry expected
varint, giving 4 rows with
created_at_ms = NULL. Self-resolved — 0 nulls in the 958 rowssince.